class Solution {
public:
    int minCost(string colors, vector<int>& neededTime) {
        int ans=0, st=0, mx=0;
        for(; st+1<(int)colors.size(); st++) //保留每段最大的needed
        {
            if(colors[st+1]==colors[st])
            {
                int en=st; //en是区间内的最后一个点
                ans+=neededTime[en]; mx=neededTime[en];
                while(en<colors.size()&&colors[en+1]==colors[st]) ans+=neededTime[++en], mx=max(mx, neededTime[en]);
                ans-=mx;
                st=en;
            } 
        }
        return ans;
    }
};